\ HEADER FOR .COM FILES 12:54 12/10/91 COPYRIGHT 1985, 1991 (C) BY THOMAS ALMY. ALL RIGHTS RESERVED Permission is granted to registered users of ForthCMP to sell or distrubute computer programs incorporating the compiled contents of this file. MS is a trademark of Microsoft Corporation. This file is for standard MS-DOS operation, with or without a separate stack segment. \ HEADER FOR .COM FILES 12:54 12/10/91 10 ASM HEX FWD, ( skip the variables ) VARIABLE DP ( start free ram = HERE, set by END command ) VARIABLE S0 ( top of stack ) VARIABLE R0 ( top of return stack ) VARIABLE BASE ( radix ) 0A BASE ! ( decimal ) THEN, SEPSSEG? #IF AX CS <SEG pssize # AX ADD AX SS >SEG #THEN FIND PSIZE #IF DROP ( PSIZE is constant size of program seg) PSIZE 0 10. D+ 10 M/MOD NIP DUP 10 * rssize - DUP # SP MOV ( set param stack ) 2- # S0 [] MOV ( set S0 ) DUP 10 * # BP MOV BP R0 [] MOV ( set return stack, R0 ) 4A # AH MOV SEPSSEG? #IF pssize + #THEN # BX MOV 21 INT #THEN --> \ HEADER FOR .COM FILES 12:54 12/10/91 FIND PSIZE #IF DROP #ELSE rssize NEGATE DUP # SP MOV ( set param stack ) 2- # S0 [] MOV ( set S0 ) 0 # BP MOV BP R0 [] MOV ( set return stack, R0 ) #THEN 0 0 IN/OUT NEED MAIN CLD CALL' MAIN ( call main program ) CODE bye 4C00 # AX MOV 21 INT END-CODE FORTH 0A = #IF DECIMAL #THEN